/*
 *  Copyright 2011 derek.
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package com.aocore.d2data;

/**
 *
 * @author derek
 */
public enum WarpType
{
    Act1WildernessToCaveCliffL(0),
    Act1WildernessToCaveCliffR(1),
    Act1WildernessToCaveFloorL(2),
    Act1WildernessToCaveFloorR(3),
    Act1CaveUp(4),
    Act1CaveDown(5),
    Act1GraveyardToCrypt1(6),
    Act1GraveyardToCrypt2(7),
    Act1CryptUp(8),
    Act1CryptDown(9),
    Act1WildernessToTower(10),
    Act1TowerToWilderness(11),
    Act1TowerToCrypt(12),
    Act1JailUp(13),
    Act1JailDown(14),
    Act1CathedralToCatacombs(15),
    Act1CatacombsToCathedral(16),
    Act1CatacombsUp(17),
    Act1CatacombsDown(18),
    Act2TownToSewerTrap(19),
    Act2TownToSewerDock(20),
    Act2SewerDockToTown(21),
    Act2SewerUp(22),
    Act2SewerDown(23),
    Act2TownToHarem(24),
    Act2HaremToTown(25),
    Act2HaremUp1(26),
    Act2HaremUp2(27),
    Act2HaremDown1(28),
    Act2HaremDown2(29),
    Act2BasementUp1(30),
    Act2BasementUp2(31),
    Act2BasementDown(32),
    Act2DesertToTombL1(33),
    Act2DesertToTombL2(34),
    Act2DesertToTombR1(35),
    Act2DesertToTombR2(36),
    Act2DesertToTombViper(37),
    Act2DesertToTombTal1(38),
    Act2DesertToTombTal2(39),
    Act2DesertToTombTal3(40),
    Act2DesertToTombTal4(41),
    Act2DesertToTombTal5(42),
    Act2DesertToTombTal6(43),
    Act2DesertToTombTal7(44),
    Act2TombUp(45),
    Act2TombDown(46),
    Act2DesertToLair(47),
    Act2LairUp(48),
    Act2LairDown(49),
    Act2DesertToSewerTrap(50),
    Act3JungleToSpider(51),
    Act3SpiderToJungle(52),
    Act3JungleToDungeonFort(53),
    Act3JungleToDungeonHole(54),
    Act3DungeonUp(55),
    Act3DungeonDown(56),
    Act3KurastToSewer(57),
    Act3SewerUpL(58),
    Act3SewerUpR(59),
    Act3SewerDown(60),
    Act3KurastToTemple(61),
    Act3TempleUpL(62),
    Act3TempleUpR(63),
    Act3TravincalToMephisto(64),
    Act3MephistoUpL(65),
    Act3MephistoUpR(66),
    Act3MephistoDownL(67),
    Act3MephistoDownR(68),
    Act4MesaToLava(69),
    Act4LavaToMesa(70),
    //Expansion(),
    Act5BarricadeDownWall(71),
    Act5BarricadeDownFloor(72),
    Act5IceCavesUp(73),
    Act5IceCavesDown(74),
    Act5IceCavesDownFloor(75),
    Act5TempleEntrance(76),
    Act5TempleDown(77),
    Act5TempleUp(78),
    Act5MountainTopToIce(79),
    Act5MountainTopToBaal(80),
    Act5BaalTempleUp(81),
    Act5BaalTempleDown(82);

    private final int id;

    private WarpType(int id)
    {
        this.id = id;
    }

    public int getId()
    {
        return id;
    }

    public static WarpType valueOf(int id) throws IllegalArgumentException
    {
        for (WarpType gameDifficulty : values())
        {
            if (gameDifficulty.getId() == id)
            {
                return gameDifficulty;
            }
        }

        throw new IllegalArgumentException(id + " is not a valid WarpType");
    }
}
